#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
技术形态引擎 v2.0

简化接口设计：让简单的事情简单做，让复杂的事情可以做

快速开始：
    from technical_engine import analyze_quick
    
    # 一行代码完成分析
    signals = analyze_quick('000001.SZ', df, {'profit_ratio': 0.1})

完整控制：
    from technical_engine import create_engine
    
    # 创建引擎（自动加载配置）
    engine = create_engine()
    
    # 完整的分析和控制
    signals = engine.analyze_all_patterns(stock, data, position_info)
    engine.get_statistics()
"""

from .technical_filters import TechnicalEngine
from .signal_generator import SignalPriority

__version__ = '2.0.0'


# ============================================================================
# 便捷工厂函数（简化接口）
# ============================================================================

def create_engine(config=None, strategy=None):
    """
    创建技术引擎（自动加载配置）
    
    Args:
        config: 配置字典（默认自动加载）
        strategy: 策略实例（可选）
    
    示例：
        # 使用默认配置
        engine = create_engine()
        
        # 自定义配置
        engine = create_engine(config=my_config)
    """
    if config is None:
        from config_loader import load_technical_config
        config = load_technical_config()
    
    return TechnicalEngine(config, strategy)


def analyze_quick(stock, stock_data, position_info=None, config=None):
    """
    快速分析：一行代码完成技术形态分析
    
    Args:
        stock: 股票代码
        stock_data: K线数据 DataFrame
        position_info: 持仓信息 {'profit_ratio': 0.1}（可选）
        config: 配置字典（可选）
    
    Returns:
        信号列表（已按优先级排序）
    
    示例：
        signals = analyze_quick('000001.SZ', df, {'profit_ratio': 0.1})
    
    注意：频繁调用建议用 create_engine()
    """
    engine = create_engine(config=config)
    return engine.analyze_all_patterns(stock, stock_data, position_info)


def get_best_signal(signals, signal_type='sell'):
    """
    获取最优信号（优先级最高）
    
    Args:
        signals: 信号列表
        signal_type: 'sell' 或 'buy'
    
    Returns:
        最优信号，无则返回 None
    
    示例：
        best = get_best_signal(signals, 'sell')
        if best:
            print(best['reason'])
    """
    filtered = [s for s in signals if s.get('signal_type') == signal_type]
    return filtered[0] if filtered else None


def has_emergency_signal(signals):
    """
    检查是否存在紧急信号
    
    Args:
        signals: 信号列表
    
    Returns:
        True/False
    
    示例：
        if has_emergency_signal(signals):
            print("⚠️ 紧急信号！")
    """
    return any(s.get('urgency') == 'emergency' for s in signals)


# ============================================================================
# 导出列表
# ============================================================================

def evaluate_sell_quick(stock, strategy_signal, today_data, position_info=None, mode='intraday', metrics=None, config=None):
    """
    快速评估卖出信号：统一接口，一行代码完成技术评估 ⭐ 新增
    
    Args:
        stock: 股票代码
        strategy_signal: 策略信号（可为None）
        today_data: 当日数据（分时模式）
        position_info: 持仓信息
        mode: 分析模式 ('intraday' | 'daily')
        metrics: 预计算指标
        config: 配置字典（可选）
    
    Returns:
        评估结果字典（包含 action, signal, enhancement）
    
    示例：
        result = evaluate_sell_quick(stock, strategy_signal, today_data, position_info)
        if result['action'] == 'independent':
            # 条件D触发
            return result['signal']
        elif result['action'] == 'enhanced':
            # 条件C+技术
            return result['signal']
    """
    engine = create_engine(config=config)
    return engine.evaluate_sell_signal(
        stock=stock,
        strategy_signal=strategy_signal,
        today_data=today_data,
        position_info=position_info,
        mode=mode,
        metrics=metrics
    )


__all__ = [
    # 核心类（完整控制）
    'TechnicalEngine',        # 技术引擎主类
    'SignalPriority',         # 信号优先级常量
    
    # 便捷函数（简化接口）
    'create_engine',          # 工厂函数：自动加载配置
    'analyze_quick',          # 快速分析：一行搞定
    'evaluate_sell_quick',    # ⭐ 新增：快速评估卖出信号（统一接口）
    'get_best_signal',        # 提取最优信号
    'has_emergency_signal',   # 检查紧急信号
]

